/*
 * Copyright (c) 2012 copyright Gábor Heizer
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation
 * files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy,
 * modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software
 * is furnished to do so, subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
 * WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */

package hu.my.bnf.util;

import hu.my.bnf.validation.StringValidation;
import org.jetbrains.annotations.NotNull;

import static hu.my.bnf.Constants.EMPTY_STRING;

/**
 * Gets the system property indicated by the specified key.
 */
public final class Properties {

//--------------------------------------------------------------------------------------------------------------------------------
// Constructors
//--------------------------------------------------------------------------------------------------------------------------------

    /**
     * Prevents instantiation.
     */
    private Properties() {
    }

//--------------------------------------------------------------------------------------------------------------------------------
// Methods
//--------------------------------------------------------------------------------------------------------------------------------

    /**
     * Gets the system property indicated by the specified key.
     *
     * @param key the name of the system property.
     * @param def  a default value.
     * @return the int value of the system property, or the default value if there is no property with that key.
     */
    public static int getIntProperty(@NotNull final String key, @NotNull final String def) {
        String val = System.getProperty(key, EMPTY_STRING);
        return Integer.parseInt(StringValidation.isEmpty(val) ? def : val);
    }
}
